#import <Foundation/Foundation.h>
#import "GPSLocation.h"
#import "PersistentDataType.h"
#import "Location.h"

/**
 * Contains building specific information such as: building tags, 
 * an event list, and for future referece a point of interest list.
 * 
 * @author      Justin Hollander
 * @author      James Lin
 * @version     2.2.4
 * @since       0.1.0
 */
@interface Building : Location<PersistentDataType>

@property (nonatomic, retain) NSMutableArray* buildingTags; // Alternate building names
@property (nonatomic, retain) NSMutableArray* poiList;      // Points of interest at building
@property (nonatomic, retain) NSMutableArray* eventList;    // Events at building
@property (nonatomic, retain) NSArray* buildingImages;      // Filenames of building images
@property (nonatomic, retain) NSString* secondaryName;      // Secondary name of building
@property (nonatomic, retain) NSString* mainAbbrev;         // Abbreviation for main name
@property (nonatomic, retain) NSString* secondaryAbbrev;    // Abbreviation for secondary name
@property (nonatomic, retain) NSString* description;        // Description of building

/**
 * Initialize the building with given name.
 *
 * @param nm        the name of the building
 * @return          the initialized building with name
 */
- (id)initWithParam:(NSString*)nm;

/**
 * Initialize the building with given information.
 *
 * @param nm        the name of the building
 * @param location  location of the building
 * @param array     the array of building name tags
 * @return          the initialized building with details
 */
- (id)initWithParam:(NSString *)nm 
		gpsLocation:(GPSLocation*)location 
			tagList:(NSMutableArray*)array;

/**
 * Initialize the building with given information.
 *
 * @param nm        the name of the building
 * @param location  location of the building
 * @param array     the array of building name tags
 * @param mAbbrev   the abbreviation of name of the building
 * @param secName   the secondary name of the building
 * @param sAbbrev   the abbreviation of secondary name of the building
 * @param desc      the description of the building
 * @param images    list of filenames of the building images
 * @return          the initialized building with details
 */
- (id)initWithParam:(NSString *)nm 
		gpsLocation:(GPSLocation*)location 
			tagList:(NSMutableArray*)array 
		 mainAbbrev:(NSString*)mAbbrev 
			secName:(NSString*)secName 
		  secAbbrev:(NSString*)sAbbrev
		description:(NSString*)desc 
			 images:(NSArray*)images;

/**
 * Clear its event list.
 */
- (void)flushEventList;

@end
